/* Our current alpha state as we process nodes */
float alpha;
- /* Our current color state as we process nodes */
- GdkRGBA color;
-
/* Offset (delta x,y) as we process nodes. Occasionally this is merged into
* a transform that is referenced from child transform nodes.
*/
return alpha;
}
-static inline void
-gsk_ngl_render_job_set_color (GskNglRenderJob *job,
- const GdkRGBA *color)
-{
- job->color = *color;
-}
-
static void
extract_matrix_metadata (GskNglRenderModelview *modelview)
{
float min_u,
float min_v,
float max_u,
- float max_v)
+ float max_v,
+ const GdkRGBA *color)
{
GskNglDrawVertex *vertices = gsk_ngl_command_queue_add_vertices (job->command_queue);
- vertices[0].position[0] = min_x;
- vertices[0].position[1] = min_y;
- vertices[0].uv[0] = min_u;
- vertices[0].uv[1] = min_v;
- vertices[0].color[0] = job->color.red;
- vertices[0].color[1] = job->color.green;
- vertices[0].color[2] = job->color.blue;
- vertices[0].color[3] = job->color.alpha;
-
- vertices[1].position[0] = min_x;
- vertices[1].position[1] = max_y;
- vertices[1].uv[0] = min_u;
- vertices[1].uv[1] = max_v;
- vertices[1].color[0] = job->color.red;
- vertices[1].color[1] = job->color.green;
- vertices[1].color[2] = job->color.blue;
- vertices[1].color[3] = job->color.alpha;
-
- vertices[2].position[0] = max_x;
- vertices[2].position[1] = min_y;
- vertices[2].uv[0] = max_u;
- vertices[2].uv[1] = min_v;
- vertices[2].color[0] = job->color.red;
- vertices[2].color[1] = job->color.green;
- vertices[2].color[2] = job->color.blue;
- vertices[2].color[3] = job->color.alpha;
-
- vertices[3].position[0] = max_x;
- vertices[3].position[1] = max_y;
- vertices[3].uv[0] = max_u;
- vertices[3].uv[1] = max_v;
- vertices[3].color[0] = job->color.red;
- vertices[3].color[1] = job->color.green;
- vertices[3].color[2] = job->color.blue;
- vertices[3].color[3] = job->color.alpha;
-
- vertices[4].position[0] = min_x;
- vertices[4].position[1] = max_y;
- vertices[4].uv[0] = min_u;
- vertices[4].uv[1] = max_v;
- vertices[4].color[0] = job->color.red;
- vertices[4].color[1] = job->color.green;
- vertices[4].color[2] = job->color.blue;
- vertices[4].color[3] = job->color.alpha;
-
- vertices[5].position[0] = max_x;
- vertices[5].position[1] = min_y;
- vertices[5].uv[0] = max_u;
- vertices[5].uv[1] = min_v;
- vertices[5].color[0] = job->color.red;
- vertices[5].color[1] = job->color.green;
- vertices[5].color[2] = job->color.blue;
- vertices[5].color[3] = job->color.alpha;
+ vertices[0] = (GskNglDrawVertex) { { min_x, min_y }, { min_u, min_v }, { color->red, color->green, color->blue, color->alpha } };
+ vertices[1] = (GskNglDrawVertex) { { min_x, max_y }, { min_u, max_v }, { color->red, color->green, color->blue, color->alpha } };
+ vertices[2] = (GskNglDrawVertex) { { max_x, min_y }, { max_u, min_v }, { color->red, color->green, color->blue, color->alpha } };
+ vertices[3] = (GskNglDrawVertex) { { max_x, max_y }, { max_u, max_v }, { color->red, color->green, color->blue, color->alpha } };
+ vertices[4] = (GskNglDrawVertex) { { min_x, max_y }, { min_u, max_v }, { color->red, color->green, color->blue, color->alpha } };
+ vertices[5] = (GskNglDrawVertex) { { max_x, min_y }, { max_u, min_v }, { color->red, color->green, color->blue, color->alpha } };
}
/* load_vertex_data_with_region */
static inline void
-gsk_ngl_render_job_load_vertices_from_offscreen (GskNglRenderJob *job,
- const graphene_rect_t *bounds,
- const GskNglRenderOffscreen *offscreen)
+gsk_ngl_render_job_draw_offscreen_with_color (GskNglRenderJob *job,
+ const graphene_rect_t *bounds,
+ const GskNglRenderOffscreen *offscreen,
+ const GdkRGBA *color)
{
float min_x = job->offset_x + bounds->origin.x;
float min_y = job->offset_y + bounds->origin.y;
gsk_ngl_render_job_draw_coords (job,
min_x, min_y, max_x, max_y,
- offscreen->area.x, y1, offscreen->area.x2, y2);
+ offscreen->area.x, y1, offscreen->area.x2, y2,
+ color);
+}
+
+static inline void
+gsk_ngl_render_job_draw_offscreen (GskNglRenderJob *job,
+ const graphene_rect_t *bounds,
+ const GskNglRenderOffscreen *offscreen)
+{
+ gsk_ngl_render_job_draw_offscreen_with_color (job, bounds, offscreen, &(GdkRGBA) { 0.f, 0.f, 0.f, 0.f });
}
/* load_float_vertex_data */
static inline void
-gsk_ngl_render_job_draw (GskNglRenderJob *job,
- float x,
- float y,
- float width,
- float height)
+gsk_ngl_render_job_draw_with_color (GskNglRenderJob *job,
+ float x,
+ float y,
+ float width,
+ float height,
+ const GdkRGBA *color)
{
float min_x = job->offset_x + x;
float min_y = job->offset_y + y;
float max_x = min_x + width;
float max_y = min_y + height;
- gsk_ngl_render_job_draw_coords (job, min_x, min_y, max_x, max_y, 0, 0, 1, 1);
+ gsk_ngl_render_job_draw_coords (job, min_x, min_y, max_x, max_y, 0, 0, 1, 1, color);
+}
+
+static inline void
+gsk_ngl_render_job_draw (GskNglRenderJob *job,
+ float x,
+ float y,
+ float width,
+ float height)
+{
+ gsk_ngl_render_job_draw_with_color (job, x, y, width, height, &(GdkRGBA) { 0.f, 0.f, 0.f, 0.f });
}
/* load_vertex_data */
static inline void
+gsk_ngl_render_job_draw_rect_with_color (GskNglRenderJob *job,
+ const graphene_rect_t *bounds,
+ const GdkRGBA *color)
+{
+ gsk_ngl_render_job_draw_with_color (job,
+ bounds->origin.x,
+ bounds->origin.y,
+ bounds->size.width,
+ bounds->size.height,
+ color);
+}
+static inline void
gsk_ngl_render_job_draw_rect (GskNglRenderJob *job,
const graphene_rect_t *bounds)
{
float max_x = min_x + bounds->size.width;
float max_y = min_y + bounds->size.height;
- gsk_ngl_render_job_draw_coords (job, min_x, min_y, max_x, max_y, 0, 1, 1, 0);
+ gsk_ngl_render_job_draw_coords (job,
+ min_x, min_y, max_x, max_y,
+ 0, 1, 1, 0,
+ &(GdkRGBA) { 0.f, 0.f, 0.f, 0.f } );
}
static inline void
gsk_ngl_program_set_uniform2f (job->current_program,
UNIFORM_BLUR_DIR, 0,
1, 0);
- gsk_ngl_render_job_draw_coords (job, 0, 0, texture_to_blur_width, texture_to_blur_height, 0, 1, 1, 0);
+ gsk_ngl_render_job_draw_coords (job,
+ 0, 0, texture_to_blur_width, texture_to_blur_height,
+ 0, 1, 1, 0,
+ &(GdkRGBA) { 0.f, 0.f, 0.f, 0.f });
gsk_ngl_render_job_end_draw (job);
/* Bind second pass framebuffer and clear it */
gsk_ngl_program_set_uniform2f (job->current_program,
UNIFORM_BLUR_DIR, 0,
0, 1);
- gsk_ngl_render_job_draw_coords (job, 0, 0, texture_to_blur_width, texture_to_blur_height, 0, 1, 1, 0);
+ gsk_ngl_render_job_draw_coords (job,
+ 0, 0, texture_to_blur_width, texture_to_blur_height,
+ 0, 1, 1, 0,
+ &(GdkRGBA) { 0.f, 0.f, 0.f, 0.f });
gsk_ngl_render_job_end_draw (job);
gsk_ngl_render_job_pop_modelview (job);
const GskRenderNode *node)
{
gsk_ngl_render_job_begin_draw (job, CHOOSE_PROGRAM (job, color));
- gsk_ngl_render_job_set_color (job, gsk_color_node_get_color (node));
- gsk_ngl_render_job_draw_rect (job, &node->bounds);
+ gsk_ngl_render_job_draw_rect_with_color (job,
+ &node->bounds,
+ gsk_color_node_get_color (node));
gsk_ngl_render_job_end_draw (job);
}
GL_TEXTURE_2D,
GL_TEXTURE0,
offscreen.texture_id);
- gsk_ngl_render_job_load_vertices_from_offscreen (job, &node->bounds, &offscreen);
+ gsk_ngl_render_job_draw_offscreen (job, &node->bounds, &offscreen);
gsk_ngl_render_job_end_draw (job);
}
}
gsk_ngl_render_job_begin_draw (job, CHOOSE_PROGRAM (job, color));
- gsk_ngl_render_job_set_color (job, &colors[0]);
-
- gsk_ngl_render_job_draw_rect (job,
- &GRAPHENE_RECT_INIT (origin->x,
- origin->y,
- size->width - widths[1],
- widths[0]));
+ if (widths[0] > 0)
+ gsk_ngl_render_job_draw_rect_with_color (job,
+ &GRAPHENE_RECT_INIT (origin->x, origin->y, size->width - widths[1], widths[0]),
+ &colors[0]);
- gsk_ngl_render_job_draw_rect (job,
- &GRAPHENE_RECT_INIT (origin->x + size->width - widths[1],
- origin->y,
- widths[1],
- size->height - widths[2]));
+ if (widths[1] > 0)
+ gsk_ngl_render_job_draw_rect_with_color (job,
+ &GRAPHENE_RECT_INIT (origin->x + size->width - widths[1], origin->y, widths[1], size->height - widths[2]),
+ &colors[0]);
- gsk_ngl_render_job_draw_rect (job,
- &GRAPHENE_RECT_INIT (origin->x + widths[3],
- origin->y + size->height - widths[2],
- size->width - widths[1],
- widths[2]));
+ if (widths[2] > 0)
+ gsk_ngl_render_job_draw_rect_with_color (job,
+ &GRAPHENE_RECT_INIT (origin->x + widths[3], origin->y + size->height - widths[2], size->width - widths[1], widths[2]),
+ &colors[0]);
- gsk_ngl_render_job_draw_rect (job,
- &GRAPHENE_RECT_INIT (origin->x,
- origin->y + widths[0],
- widths[3],
- size->height - widths[0]));
+ if (widths[3] > 0)
+ gsk_ngl_render_job_draw_rect_with_color (job,
+ &GRAPHENE_RECT_INIT (origin->x, origin->y + widths[0], widths[3], size->height - widths[0]),
+ &colors[0]);
gsk_ngl_render_job_end_draw (job);
}
gsk_ngl_render_job_transform_rounded_rect (job, rounded_outline, &outline);
gsk_ngl_render_job_begin_draw (job, CHOOSE_PROGRAM (job, inset_shadow));
- gsk_ngl_render_job_set_color (job, &colors[0]);
gsk_ngl_program_set_uniform_rounded_rect (job->current_program,
UNIFORM_INSET_SHADOW_OUTLINE_RECT, 0,
&outline);
gsk_ngl_program_set_uniform2f (job->current_program,
UNIFORM_INSET_SHADOW_OFFSET, 0,
0, 0);
- gsk_ngl_render_job_draw_rect (job, &node->bounds);
+ gsk_ngl_render_job_draw_rect_with_color (job, &node->bounds, &colors[0]);
gsk_ngl_render_job_end_draw (job);
}
GL_TEXTURE_2D,
GL_TEXTURE0,
offscreen.texture_id);
- gsk_ngl_render_job_load_vertices_from_offscreen (job, &child->bounds, &offscreen);
+ gsk_ngl_render_job_draw_offscreen (job, &child->bounds, &offscreen);
gsk_ngl_render_job_end_draw (job);
gsk_ngl_render_job_pop_modelview (job);
gsk_ngl_render_job_transform_rounded_rect (job, outline, &transformed_outline);
gsk_ngl_render_job_begin_draw (job, CHOOSE_PROGRAM (job, inset_shadow));
- gsk_ngl_render_job_set_color (job, gsk_inset_shadow_node_get_color (node));
gsk_ngl_program_set_uniform_rounded_rect (job->current_program,
UNIFORM_INSET_SHADOW_OUTLINE_RECT, 0,
&transformed_outline);
UNIFORM_INSET_SHADOW_OFFSET, 0,
gsk_inset_shadow_node_get_dx (node),
gsk_inset_shadow_node_get_dy (node));
- gsk_ngl_render_job_draw_rect (job, &node->bounds);
+ gsk_ngl_render_job_draw_rect_with_color (job, &node->bounds, gsk_inset_shadow_node_get_color (node));
gsk_ngl_render_job_end_draw (job);
}
/* Actual inset shadow outline drawing */
gsk_ngl_render_job_begin_draw (job, CHOOSE_PROGRAM (job, inset_shadow));
- gsk_ngl_render_job_set_color (job, gsk_inset_shadow_node_get_color (node));
gsk_ngl_program_set_uniform_rounded_rect (job->current_program,
UNIFORM_INSET_SHADOW_OUTLINE_RECT, 0,
&transformed_outline);
UNIFORM_INSET_SHADOW_OFFSET, 0,
offset_x * scale_x,
offset_y * scale_y);
- gsk_ngl_render_job_draw (job, 0, 0, texture_width, texture_height);
+ gsk_ngl_render_job_draw_with_color (job,
+ 0, 0, texture_width, texture_height,
+ gsk_inset_shadow_node_get_color (node));
gsk_ngl_render_job_end_draw (job);
gsk_ngl_render_job_pop_modelview (job);
GL_TEXTURE_2D,
GL_TEXTURE0,
blurred_texture_id);
- gsk_ngl_render_job_load_vertices_from_offscreen (job, &node->bounds, &offscreen);
+ gsk_ngl_render_job_draw_offscreen (job, &node->bounds, &offscreen);
gsk_ngl_render_job_end_draw (job);
if (needs_clip)
float spread = gsk_outset_shadow_node_get_spread (node);
float dx = gsk_outset_shadow_node_get_dx (node);
float dy = gsk_outset_shadow_node_get_dy (node);
+ const GdkRGBA *color = gsk_outset_shadow_node_get_color (node);
const float edge_sizes[] = { // Top, right, bottom, left
spread - dy, spread + dx, spread + dy, spread - dx
};
gsk_ngl_render_job_transform_rounded_rect (job, outline, &transformed_outline);
gsk_ngl_render_job_begin_draw (job, CHOOSE_PROGRAM (job, unblurred_outset_shadow));
- gsk_ngl_render_job_set_color (job, gsk_outset_shadow_node_get_color (node));
gsk_ngl_program_set_uniform_rounded_rect (job->current_program,
UNIFORM_UNBLURRED_OUTSET_SHADOW_OUTLINE_RECT, 0,
&transformed_outline);
/* Corners... */
if (corner_sizes[0][0] > 0 && corner_sizes[0][1] > 0) /* Top left */
- gsk_ngl_render_job_draw (job,
- x, y,
- corner_sizes[0][0], corner_sizes[0][1]);
+ gsk_ngl_render_job_draw_with_color (job,
+ x, y, corner_sizes[0][0], corner_sizes[0][1],
+ color);
if (corner_sizes[1][0] > 0 && corner_sizes[1][1] > 0) /* Top right */
- gsk_ngl_render_job_draw (job,
- x + w - corner_sizes[1][0], y,
- corner_sizes[1][0], corner_sizes[1][1]);
+ gsk_ngl_render_job_draw_with_color (job,
+ x + w - corner_sizes[1][0], y,
+ corner_sizes[1][0], corner_sizes[1][1],
+ color);
if (corner_sizes[2][0] > 0 && corner_sizes[2][1] > 0) /* Bottom right */
- gsk_ngl_render_job_draw (job,
- x + w - corner_sizes[2][0], y + h - corner_sizes[2][1],
- corner_sizes[2][0], corner_sizes[2][1]);
+ gsk_ngl_render_job_draw_with_color (job,
+ x + w - corner_sizes[2][0], y + h - corner_sizes[2][1],
+ corner_sizes[2][0], corner_sizes[2][1],
+ color);
if (corner_sizes[3][0] > 0 && corner_sizes[3][1] > 0) /* Bottom left */
- gsk_ngl_render_job_draw (job,
- x, y + h - corner_sizes[3][1],
- corner_sizes[3][0], corner_sizes[3][1]);
+ gsk_ngl_render_job_draw_with_color (job,
+ x, y + h - corner_sizes[3][1],
+ corner_sizes[3][0], corner_sizes[3][1],
+ color);
/* Edges... */;
if (edge_sizes[0] > 0) /* Top */
- gsk_ngl_render_job_draw (job,
- x + corner_sizes[0][0], y,
- w - corner_sizes[0][0] - corner_sizes[1][0], edge_sizes[0]);
+ gsk_ngl_render_job_draw_with_color (job,
+ x + corner_sizes[0][0], y,
+ w - corner_sizes[0][0] - corner_sizes[1][0], edge_sizes[0],
+ color);
if (edge_sizes[1] > 0) /* Right */
- gsk_ngl_render_job_draw (job,
- x + w - edge_sizes[1], y + corner_sizes[1][1],
- edge_sizes[1], h - corner_sizes[1][1] - corner_sizes[2][1]);
+ gsk_ngl_render_job_draw_with_color (job,
+ x + w - edge_sizes[1], y + corner_sizes[1][1],
+ edge_sizes[1], h - corner_sizes[1][1] - corner_sizes[2][1],
+ color);
if (edge_sizes[2] > 0) /* Bottom */
- gsk_ngl_render_job_draw (job,
- x + corner_sizes[3][0], y + h - edge_sizes[2],
- w - corner_sizes[3][0] - corner_sizes[2][0], edge_sizes[2]);
+ gsk_ngl_render_job_draw_with_color (job,
+ x + corner_sizes[3][0], y + h - edge_sizes[2],
+ w - corner_sizes[3][0] - corner_sizes[2][0], edge_sizes[2],
+ color);
if (edge_sizes[3] > 0) /* Left */
- gsk_ngl_render_job_draw (job,
- x, y + corner_sizes[0][1],
- edge_sizes[3], h - corner_sizes[0][1] - corner_sizes[3][1]);
+ gsk_ngl_render_job_draw_with_color (job,
+ x, y + corner_sizes[0][1],
+ edge_sizes[3], h - corner_sizes[0][1] - corner_sizes[3][1],
+ color);
gsk_ngl_render_job_end_draw (job);
}
/* Draw the outline using color program */
gsk_ngl_render_job_begin_draw (job, CHOOSE_PROGRAM (job, color));
- gsk_ngl_render_job_set_color (job, &white);
- gsk_ngl_render_job_draw (job, 0, 0, texture_width, texture_height);
+ gsk_ngl_render_job_draw_with_color (job, 0, 0, texture_width, texture_height, &white);
gsk_ngl_render_job_end_draw (job);
/* Reset state from offscreen */
init_full_texture_region (&offscreen);
gsk_ngl_render_job_begin_draw (job, CHOOSE_PROGRAM (job, outset_shadow));
- gsk_ngl_render_job_set_color (job, color);
gsk_ngl_program_set_uniform_texture (job->current_program,
UNIFORM_SHARED_SOURCE, 0,
GL_TEXTURE_2D,
gsk_ngl_program_set_uniform_rounded_rect (job->current_program,
UNIFORM_OUTSET_SHADOW_OUTLINE_RECT, 0,
&transformed_outline);
- gsk_ngl_render_job_load_vertices_from_offscreen (job,
- &GRAPHENE_RECT_INIT (min_x,
- min_y,
- texture_width / scale_x,
- texture_height / scale_y),
- &offscreen);
+ gsk_ngl_render_job_draw_offscreen_with_color (job,
+ &GRAPHENE_RECT_INIT (min_x,
+ min_y,
+ texture_width / scale_x,
+ texture_height / scale_y),
+ &offscreen,
+ color);
gsk_ngl_render_job_end_draw (job);
return;
}
gsk_ngl_render_job_begin_draw (job, CHOOSE_PROGRAM (job, outset_shadow));
- gsk_ngl_render_job_set_color (job, color);
gsk_ngl_program_set_uniform_texture (job->current_program,
UNIFORM_SHARED_SOURCE, 0,
GL_TEXTURE_2D,
if (nine_slice_is_visible (&slices[NINE_SLICE_TOP_LEFT]))
{
memcpy (&offscreen.area, &slices[NINE_SLICE_TOP_LEFT].area, sizeof offscreen.area);
- gsk_ngl_render_job_load_vertices_from_offscreen (job,
- &GRAPHENE_RECT_INIT (min_x, min_y,
- slices[NINE_SLICE_TOP_LEFT].rect.width / scale_x,
- slices[NINE_SLICE_TOP_LEFT].rect.height / scale_y),
- &offscreen);
+ gsk_ngl_render_job_draw_offscreen_with_color (job,
+ &GRAPHENE_RECT_INIT (min_x, min_y,
+ slices[NINE_SLICE_TOP_LEFT].rect.width / scale_x,
+ slices[NINE_SLICE_TOP_LEFT].rect.height / scale_y),
+ &offscreen,
+ color);
}
/* Top center */
memcpy (&offscreen.area, &slices[NINE_SLICE_TOP_CENTER].area, sizeof offscreen.area);
float width = (max_x - min_x) - (slices[NINE_SLICE_TOP_LEFT].rect.width / scale_x +
slices[NINE_SLICE_TOP_RIGHT].rect.width / scale_x);
- gsk_ngl_render_job_load_vertices_from_offscreen (job,
- &GRAPHENE_RECT_INIT (min_x + (slices[NINE_SLICE_TOP_LEFT].rect.width / scale_x),
- min_y,
- width,
- slices[NINE_SLICE_TOP_CENTER].rect.height / scale_y),
- &offscreen);
+ gsk_ngl_render_job_draw_offscreen_with_color (job,
+ &GRAPHENE_RECT_INIT (min_x + (slices[NINE_SLICE_TOP_LEFT].rect.width / scale_x),
+ min_y,
+ width,
+ slices[NINE_SLICE_TOP_CENTER].rect.height / scale_y),
+ &offscreen,
+ color);
}
/* Top right */
if (nine_slice_is_visible (&slices[NINE_SLICE_TOP_RIGHT]))
{
memcpy (&offscreen.area, &slices[NINE_SLICE_TOP_RIGHT].area, sizeof offscreen.area);
- gsk_ngl_render_job_load_vertices_from_offscreen (job,
- &GRAPHENE_RECT_INIT (max_x - (slices[NINE_SLICE_TOP_RIGHT].rect.width / scale_x),
- min_y,
- slices[NINE_SLICE_TOP_RIGHT].rect.width / scale_x,
- slices[NINE_SLICE_TOP_RIGHT].rect.height / scale_y),
- &offscreen);
+ gsk_ngl_render_job_draw_offscreen_with_color (job,
+ &GRAPHENE_RECT_INIT (max_x - (slices[NINE_SLICE_TOP_RIGHT].rect.width / scale_x),
+ min_y,
+ slices[NINE_SLICE_TOP_RIGHT].rect.width / scale_x,
+ slices[NINE_SLICE_TOP_RIGHT].rect.height / scale_y),
+ &offscreen,
+ color);
}
/* Bottom right */
if (nine_slice_is_visible (&slices[NINE_SLICE_BOTTOM_RIGHT]))
{
memcpy (&offscreen.area, &slices[NINE_SLICE_BOTTOM_RIGHT].area, sizeof offscreen.area);
- gsk_ngl_render_job_load_vertices_from_offscreen (job,
- &GRAPHENE_RECT_INIT (max_x - (slices[NINE_SLICE_BOTTOM_RIGHT].rect.width / scale_x),
- max_y - (slices[NINE_SLICE_BOTTOM_RIGHT].rect.height / scale_y),
- slices[NINE_SLICE_BOTTOM_RIGHT].rect.width / scale_x,
- slices[NINE_SLICE_BOTTOM_RIGHT].rect.height / scale_y),
- &offscreen);
+ gsk_ngl_render_job_draw_offscreen_with_color (job,
+ &GRAPHENE_RECT_INIT (max_x - (slices[NINE_SLICE_BOTTOM_RIGHT].rect.width / scale_x),
+ max_y - (slices[NINE_SLICE_BOTTOM_RIGHT].rect.height / scale_y),
+ slices[NINE_SLICE_BOTTOM_RIGHT].rect.width / scale_x,
+ slices[NINE_SLICE_BOTTOM_RIGHT].rect.height / scale_y),
+ &offscreen,
+ color);
}
/* Bottom left */
if (nine_slice_is_visible (&slices[NINE_SLICE_BOTTOM_LEFT]))
{
memcpy (&offscreen.area, &slices[NINE_SLICE_BOTTOM_LEFT].area, sizeof offscreen.area);
- gsk_ngl_render_job_load_vertices_from_offscreen (job,
- &GRAPHENE_RECT_INIT (min_x,
- max_y - (slices[NINE_SLICE_BOTTOM_LEFT].rect.height / scale_y),
- slices[NINE_SLICE_BOTTOM_LEFT].rect.width / scale_x,
- slices[NINE_SLICE_BOTTOM_LEFT].rect.height / scale_y),
- &offscreen);
+ gsk_ngl_render_job_draw_offscreen_with_color (job,
+ &GRAPHENE_RECT_INIT (min_x,
+ max_y - (slices[NINE_SLICE_BOTTOM_LEFT].rect.height / scale_y),
+ slices[NINE_SLICE_BOTTOM_LEFT].rect.width / scale_x,
+ slices[NINE_SLICE_BOTTOM_LEFT].rect.height / scale_y),
+ &offscreen,
+ color);
}
/* Left side */
memcpy (&offscreen.area, &slices[NINE_SLICE_LEFT_CENTER].area, sizeof offscreen.area);
float height = (max_y - min_y) - (slices[NINE_SLICE_TOP_LEFT].rect.height / scale_y +
slices[NINE_SLICE_BOTTOM_LEFT].rect.height / scale_y);
- gsk_ngl_render_job_load_vertices_from_offscreen (job,
- &GRAPHENE_RECT_INIT (min_x,
- min_y + (slices[NINE_SLICE_TOP_LEFT].rect.height / scale_y),
- slices[NINE_SLICE_LEFT_CENTER].rect.width / scale_x,
- height),
- &offscreen);
+ gsk_ngl_render_job_draw_offscreen_with_color (job,
+ &GRAPHENE_RECT_INIT (min_x,
+ min_y + (slices[NINE_SLICE_TOP_LEFT].rect.height / scale_y),
+ slices[NINE_SLICE_LEFT_CENTER].rect.width / scale_x,
+ height),
+ &offscreen,
+ color);
}
/* Right side */
memcpy (&offscreen.area, &slices[NINE_SLICE_RIGHT_CENTER].area, sizeof offscreen.area);
float height = (max_y - min_y) - (slices[NINE_SLICE_TOP_RIGHT].rect.height / scale_y +
slices[NINE_SLICE_BOTTOM_RIGHT].rect.height / scale_y);
- gsk_ngl_render_job_load_vertices_from_offscreen (job,
- &GRAPHENE_RECT_INIT (max_x - (slices[NINE_SLICE_RIGHT_CENTER].rect.width / scale_x),
- min_y + (slices[NINE_SLICE_TOP_LEFT].rect.height / scale_y),
- slices[NINE_SLICE_RIGHT_CENTER].rect.width / scale_x,
- height),
- &offscreen);
+ gsk_ngl_render_job_draw_offscreen_with_color (job,
+ &GRAPHENE_RECT_INIT (max_x - (slices[NINE_SLICE_RIGHT_CENTER].rect.width / scale_x),
+ min_y + (slices[NINE_SLICE_TOP_LEFT].rect.height / scale_y),
+ slices[NINE_SLICE_RIGHT_CENTER].rect.width / scale_x,
+ height),
+ &offscreen,
+ color);
}
/* Bottom side */
memcpy (&offscreen.area, &slices[NINE_SLICE_BOTTOM_CENTER].area, sizeof offscreen.area);
float width = (max_x - min_x) - (slices[NINE_SLICE_BOTTOM_LEFT].rect.width / scale_x +
slices[NINE_SLICE_BOTTOM_RIGHT].rect.width / scale_x);
- gsk_ngl_render_job_load_vertices_from_offscreen (job,
- &GRAPHENE_RECT_INIT (min_x + (slices[NINE_SLICE_BOTTOM_LEFT].rect.width / scale_x),
- max_y - (slices[NINE_SLICE_BOTTOM_CENTER].rect.height / scale_y),
- width,
- slices[NINE_SLICE_BOTTOM_CENTER].rect.height / scale_y),
- &offscreen);
+ gsk_ngl_render_job_draw_offscreen_with_color (job,
+ &GRAPHENE_RECT_INIT (min_x + (slices[NINE_SLICE_BOTTOM_LEFT].rect.width / scale_x),
+ max_y - (slices[NINE_SLICE_BOTTOM_CENTER].rect.height / scale_y),
+ width,
+ slices[NINE_SLICE_BOTTOM_CENTER].rect.height / scale_y),
+ &offscreen,
+ color);
}
/* Middle */
slices[NINE_SLICE_RIGHT_CENTER].rect.width / scale_x);
float height = (max_y - min_y) - (slices[NINE_SLICE_TOP_CENTER].rect.height / scale_y +
slices[NINE_SLICE_BOTTOM_CENTER].rect.height / scale_y);
- gsk_ngl_render_job_load_vertices_from_offscreen (job,
- &GRAPHENE_RECT_INIT (min_x + (slices[NINE_SLICE_LEFT_CENTER].rect.width / scale_x),
- min_y + (slices[NINE_SLICE_TOP_CENTER].rect.height / scale_y),
- width, height),
- &offscreen);
+ gsk_ngl_render_job_draw_offscreen_with_color (job,
+ &GRAPHENE_RECT_INIT (min_x + (slices[NINE_SLICE_LEFT_CENTER].rect.width / scale_x),
+ min_y + (slices[NINE_SLICE_TOP_CENTER].rect.height / scale_y),
+ width, height),
+ &offscreen,
+ color);
}
}
gsk_ngl_program_set_uniform1f (job->current_program,
UNIFORM_CROSS_FADE_PROGRESS, 0,
progress);
- gsk_ngl_render_job_load_vertices_from_offscreen (job, &node->bounds, &offscreen_end);
+ gsk_ngl_render_job_draw_offscreen (job, &node->bounds, &offscreen_end);
gsk_ngl_render_job_end_draw (job);
}
GL_TEXTURE_2D,
GL_TEXTURE0,
offscreen.texture_id);
- gsk_ngl_render_job_load_vertices_from_offscreen (job, &node->bounds, &offscreen);
+ gsk_ngl_render_job_draw_offscreen (job, &node->bounds, &offscreen);
gsk_ngl_render_job_end_draw (job);
}
else
gsk_ngl_render_job_offset (job, dx, dy);
gsk_ngl_render_job_begin_draw (job, CHOOSE_PROGRAM (job, coloring));
- gsk_ngl_render_job_set_color (job, &shadow->color);
gsk_ngl_program_set_uniform_texture (job->current_program,
UNIFORM_SHARED_SOURCE, 0,
GL_TEXTURE_2D,
GL_TEXTURE0,
offscreen.texture_id);
- gsk_ngl_render_job_load_vertices_from_offscreen (job, &bounds, &offscreen);
+ gsk_ngl_render_job_draw_offscreen_with_color (job, &bounds, &offscreen, &shadow->color);
gsk_ngl_render_job_end_draw (job);
gsk_ngl_render_job_offset (job, -dx, -dy);
}
GL_TEXTURE_2D,
GL_TEXTURE0,
offscreen.texture_id);
- gsk_ngl_render_job_draw_coords (job, min_x, min_y, max_x, max_y, 0, 1, 1, 0);
+ gsk_ngl_render_job_draw_coords (job,
+ min_x, min_y, max_x, max_y,
+ 0, 1, 1, 0,
+ &(GdkRGBA) { 0.f, 0.f, 0.f, 0.f } );
gsk_ngl_render_job_end_draw (job);
}
GL_TEXTURE_2D,
GL_TEXTURE0,
bottom_offscreen.texture_id);
- gsk_ngl_render_job_load_vertices_from_offscreen (job, &node->bounds, &bottom_offscreen);
+ gsk_ngl_render_job_draw_offscreen (job, &node->bounds, &bottom_offscreen);
gsk_ngl_render_job_end_draw (job);
return;
}
UNIFORM_COLOR_MATRIX_COLOR_OFFSET, 0,
1,
offset);
- gsk_ngl_render_job_load_vertices_from_offscreen (job, &node->bounds, &offscreen);
+ gsk_ngl_render_job_draw_offscreen (job, &node->bounds, &offscreen);
gsk_ngl_render_job_end_draw (job);
}
static const GdkRGBA pink = { 255 / 255., 105 / 255., 180 / 255., 1.0 };
gsk_ngl_render_job_begin_draw (job, CHOOSE_PROGRAM (job, color));
- gsk_ngl_render_job_set_color (job, &pink);
- gsk_ngl_render_job_draw_rect (job, &node->bounds);
+ gsk_ngl_render_job_draw_rect_with_color (job, &node->bounds, &pink);
gsk_ngl_render_job_end_draw (job);
}
GL_TEXTURE_2D,
GL_TEXTURE0,
offscreen.texture_id);
- gsk_ngl_render_job_load_vertices_from_offscreen (job, &node->bounds, &offscreen);
+ gsk_ngl_render_job_draw_offscreen (job, &node->bounds, &offscreen);
gsk_ngl_render_job_end_draw (job);
}
else
GL_TEXTURE0,
slice->texture_id);
- gsk_ngl_render_job_draw_coords (job, x1, y1, x2, y2, 0, 0, 1, 1);
+ gsk_ngl_render_job_draw_coords (job,
+ x1, y1, x2, y2,
+ 0, 0, 1, 1,
+ &(GdkRGBA) { 0.f, 0.f, 0.f, 0.f });
}
gsk_ngl_render_job_end_draw (job);
offscreen.was_offscreen ? offscreen.area.y2 : offscreen.area.y,
offscreen.area.x2,
offscreen.was_offscreen ? offscreen.area.y : offscreen.area.y2);
- gsk_ngl_render_job_load_vertices_from_offscreen (job, &node->bounds, &offscreen);
+ gsk_ngl_render_job_draw_offscreen (job, &node->bounds, &offscreen);
gsk_ngl_render_job_end_draw (job);
}
job->viewport = *viewport;
gsk_ngl_render_job_set_alpha (job, 1.0);
- gsk_ngl_render_job_set_color (job, &(GdkRGBA){ 0.f, 0.f, 0.f, 0.f });
gsk_ngl_render_job_set_projection_from_rect (job, viewport, NULL);
gsk_ngl_render_job_set_modelview (job, gsk_transform_scale (NULL, scale_factor, scale_factor));